<?php

class Live
{
    /**
     * @var Ads[]
     */
	public $adsList = [];

    /**
     * 资料文档
     * @var string
     */
	public $doc;
}

$live = new Live();

foreach ($live->adsList as $ads){
    $ads->doc;
}

class Import
{
    /**
     * Import constructor.
     * @param array $rows
     * @deprecated  //标注方法已废弃
     */
    public static function import(array $rows)
    {
        /**
         * @var $blocks Block[]
         */
        $blocks = [];
        foreach($rows as $row){
            $oldId = $row["I"];
            if(!isset($blocks[$oldId])){
                $blocks[$oldId] = self::initBlock($row);
            } else {
                $blocks[$oldId]->city = '';
            }
        }

    }
}

class BizException extends RuntimeException
{

}

function addUser($nickname)
{
    if (wordsCheck($nickname)) {
        throw new BizException('昵称非法');
    }
    if (duplicateCheck($nickname)) {
        throw new BizException('昵称被占用');
    }
}

function wordsCheck($string)
{
    return time() % 2 == 0 ? true : false;
}

function duplicateCheck($string)
{
    return time() % 2 == 0 ? true:false;
}



function addUserBiz($nickname, $teamId)
{
    $res = addUser($nickname);
    joinTeam($res, $teamId);
    return $res;
}

function addUserAction()
{
    try{
        $res = addUserBiz('XXX', 1);
    } catch (BizException $e){
        $res['success'] = false;
        echo json_encode($res);
    }
}


class Bootstrap
{
    public function __construct()
    {
        $this->init();
    }

    public function init()
    {
        $uid = decodCookie();
        checkAndRegister($uid);
    }
}

function decodeCookie()
{
    return 9527;
}

function checkAndRegister($uid)
{

}




/**
 * 亿级PV网站架构的技术细节与套路
 *
 * 1.后端架构的套路
 *  (服务解耦)
 * (负载均衡 动静分离 读写分离 缓存 分布式)
 * 2.性能优化的思路
 * 3.服务治理的实现
 *  活动服务
 * 订单服务
 * 客服服务
 * 服务器治疗的核心之一 RPC
 * RPC的学习 https://mengkang.net/580.html
 * 4.日志收集与分析
 *      监控日志
 *      业务日志
 *      开发调试
 *      用户行为
 *      运营埋点
 * 日志收集
 *  Logstash+ Elasticsearch+Kibana
 *  sentry
 * ??从Nginx 日志里找出请求耗时最长的100条请求
 *
 * 5.分布式计划任务
 * 6.流量预估与压测
 * 7.完善的监控系统
 *  老牌监控系统 zabbix
 * 现代监控 grafana + influxdb https://mengkang.net/836.html
 *
 * 监控数据
 * 系统层
 *  CPU 内存 负载 网卡 I/O等
 * 应用层
 *  QPS api响应时长，redis内存使用，队列任务数，php-fpm进程数 mysql线程数
 * 健康巡查：dns解析 ip是否访问 硬盘 各种基础服务
 * 8.轻巧的发布系统
 *
 *
 *
 */














